home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / SERIE_AI / AI_028 / TMTOOL10.LZH / TMTOOL10 / MAN / CAT1 / PROTOTYP.1 < prev   
Text File  |  1996-03-04  |  5KB  |  153 lines

  1. PROTOTYP(1)                  Benutzerkommandos                PROTOTYP(1)
  2.  
  3. N✓NA✓AM✓ME✓E
  4.     p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p - Funktionsprototypen von C Funktionen
  5.                erstellen
  6.  
  7. S✓SY✓YN✓NO✓OP✓PS✓SI✓IS✓S
  8.     p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p [-✓-e✓eSTRING] [-✓-p✓pMACRO] [-✓-s✓s] datei(en) ...
  9.  
  10. B✓BE✓ES✓SC✓CH✓HR✓RE✓EI✓IB✓BU✓UN✓NG✓G
  11.     p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p erstellt Funktionsprototypen von C Funktionen
  12.     und gibt sie auf der Standardausgabe in folgender Form aus:
  13.     
  14.     /****  datei  ****/
  15.     returntyp funktionsname ( typ par1, typ par2, ... );
  16.     ...
  17.  
  18.     Aus programmtechnischen Gruenden sind als Eingabedateien nur
  19.     echte Dateien erlaubt (also kein Pipes, Tastatureingabe).
  20.     Die Eingabeumlenkung ueber STDIN funktioniert jedoch, aber nur
  21.     wenn STDIN auf eine echte Datei umgelenkt ist!!  Z.B.:
  22.     
  23.      p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p u:\dev\stdin <input.c >output.c
  24.  
  25.     Es funktioniert z.B. nicht:
  26.     
  27.      cat input.c | p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p u:\dev\stdin >output.c
  28.      p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p  CON:  >output.c
  29.      p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p  u:\dev\tty  >output.c
  30.      
  31.     Unter normalem TOS wird dies mittels isatty() festgestellt,
  32.     unter MiNT zusaetzlich mittels  Fcntl(..,FSTAT) ueber XATTR.mode
  33.     (Datei muß das Attribut S_IFREG haben)
  34.     
  35.  
  36.     Dies ist eine einfache Version und daher muessen folgende
  37.     Voraussetzungen fuer eine korrekte Funktionsweise erfuellt sein:
  38.     
  39.     * der C Quelltext muss syntaktisch korrekt sein
  40.     * Funktionsdefinitionen muessen im ersten Zeichen einer
  41.       Zeile beginnen
  42.     * Funktionsdefinitionen duerfen keine Makros mit Parametern
  43.       enthalten
  44.     * Kommentare ( /* ... */ ) duerfen ueberall dort stehen, wo auch
  45.       Leerzeichen erlaubt sind
  46.     
  47.     
  48.     
  49.     Folgende 2 Funktionsdefinitionstypen werden erkannt:
  50.     
  51.     * Neue Definitionsform:
  52.       
  53.       returntyp funktionsname ( typ par1, typ par2, ... )
  54.       {
  55.           ...
  56.       }
  57.       
  58.       
  59.       
  60.     * Alte Definitonsform:
  61.       
  62.       returntyp funktionsname ( par1, par2, ... )
  63.       typ par1; typ par2;
  64.       {
  65.           ...
  66.       }
  67.       
  68.       Hier ist zu beachten, dass die Parameter in der Funktions-
  69.       klammer *NICHT* ausgewertet werden!   z.B. wird aus
  70.       
  71.           int test ( eingabe, ausgabe )
  72.              int ausgabe, eingabe;
  73.           {
  74.               ...
  75.           }
  76.       
  77.       folgende Funktionsdeklaration:
  78.       
  79.           int test ( int ausgabe, int eingabe );   !!!!!
  80.     
  81.      
  82.      
  83.     Um diese Bedingungen einzuhalten, hier ein paar Tips:
  84.     
  85.     - Saemtlicher Code, der innerhalb einer Funktion steht,
  86.       wird mindestens um ein Zeichen vom linken Rand her
  87.       eingerueckt.
  88.     - Verwenden sie wenn möglich die neue Art der Funktions-
  89.       definition.
  90.  
  91.  
  92. O✓OP✓PT✓TI✓IO✓ON✓NE✓EN✓N
  93.  
  94.     Die Optionen muessen am Anfang der Argumentliste stehen und koennen
  95.     vom den Parametern durch `--' getrennt werden!
  96.     (Somit sind Parameter mit fuehrenden `-' Zeichen moeglich)
  97.     Als Beispiel dient die Datei input.c mit folgender Funktion:
  98.         long *test(int a, char *s)
  99.         { ... }
  100.     
  101.     -✓-e✓eSTRING      Der String  STRING  wird vor jede Funktiondeklaration
  102.                   gestellt.
  103.                   
  104.                   p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p -✓-e✓eEXTERN input.c
  105.                   
  106.                   ergibt
  107.                   
  108.                   EXTERN long *test( int a, char *s );
  109.  
  110.     -✓-p✓pMACRO       Die Funktionsklammer wird mit dem Makro  MACRO
  111.                   geklammert:
  112.                   
  113.                   p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p -✓-p✓pPROTO input.c
  114.                   
  115.                   ergibt
  116.                   
  117.                   long *test PROTO(( int a, char *s ));
  118.  
  119.     -✓-s✓s            Auch von statischen Funktionen wird ein Prototyp
  120.                   erzeugt. Dabei muss vor der Funktionsklammer
  121.                   der String `static' stehen.
  122.  
  123.  
  124. B✓BE✓EI✓IS✓SP✓PI✓IE✓EL✓L
  125.  
  126.     p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p -✓-e✓e__EXTERN -✓-p✓pP_ -- *.c >proto.h
  127.     cat *.c >$TMP\h ; p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p $TMP\h >proto.h
  128.  
  129. E✓EN✓NV✓VI✓IR✓RO✓ON✓NM✓ME✓EN✓NT✓T
  130.  
  131.      L✓LA✓AN✓NG✓G        Sprache der Fehlermeldungen: bei `german' Deutsch,
  132.                  sonst Englisch.
  133.                  Nur wenn L✓LC✓C_A✓AL✓LL✓L und L✓LC✓C_M✓ME✓ES✓SS✓SA✓AG✓GE✓ES✓S nicht existieren.
  134.  
  135.      L✓LC✓C_A✓AL✓LL✓L      Wie L✓LA✓AN✓NG✓G, nur wenn L✓LC✓C_M✓ME✓ES✓SS✓SA✓AG✓GE✓ES✓S nicht existiert.
  136.  
  137.      L✓LC✓C_M✓ME✓ES✓SS✓SA✓AG✓GE✓ES✓S Wie L✓LA✓AN✓NG✓G, hat aber Vorrang vor L✓LC✓C_A✓AL✓LL✓L und L✓LA✓AN✓NG✓G
  138.     
  139.      S✓ST✓TD✓DE✓ER✓RR✓R      Wenn diese Environment-Variable existiert, wird stderr 
  140.                  (Kanal 2) unverändert benutzt. Ansonsten wird es auf 
  141.                  stdout umgelenkt, sofern es auf ein zeichenorientiertes 
  142.                  Gerät zeigt.
  143.  
  144.      U✓UN✓NI✓IX✓XM✓MO✓OD✓DE✓E    Enthält diese Variable das Zeichen `/', werden alle
  145.                  UNIX-Pfadtrennzeichen (`/') in TOS-Pfadtrennzeichen
  146.                  (`\') umgewandelt.
  147.  
  148. A✓AU✓UT✓TO✓OR✓R
  149.      Version 1.01
  150.      Copyright (c) 1995,1996  ToMST
  151.      Thomas Maier, 24.02.96
  152.      tomst@eikon.e-technik.tu-muenchen.de
  153.